package cn.itcast.dao;

import cn.itcast.pojo.Role;
import cn.itcast.pojo.User;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserDao {


    User findByUserName(String username);

    @Select("select * FROM t_role where id in(select role_id from t_user_role where user_id=#{userId})")
    List<Role> findRoleListByUserId(Integer userId);



    /**
     * 保存用户基本信息
     *
     * @param user
     */
    void add(User user);

    /**
     * 条件查询用户信息
     *
     * @param queryString
     * @return
     */
    Page<User> selectByCondition(String queryString);

    /**
     * 根据用户id查询用户信息
     *
     * @param id
     * @return
     */
    User findById(Integer id);


    /**
     * 根据Id更新用户基本信息
     *
     * @param user
     */
    void update(User user);


    /**
     * 根据id删除用户信息
     *
     * @param id
     */
    void deleteById(Integer id);

    /**
     * 查询所有用户数据
     *
     * @return
     */
    List<User> findAll();

    /**
     * 设置用户和角色的关联信息
     *
     * @param userId
     * @param roleId
     */
    void setRoleAssociation(@Param("userId")Integer userId, @Param("roleId")Integer roleId);

    /**
     * 查询指定用户关联的角色id
     *
     * @param userId
     * @return
     */
    Integer[] findRoleAssociationIds(Integer userId);

    /**
     * 删除用户与角色关联信息
     *
     * @param id
     */
    void deleteRoleAssociation(Integer id);

    //void saveUserAndRoles(@Param("userId") String userId, @Param("checkedRoleId") String checkedRoleId);


}
